package com.taoxinhuan.rocket.controller;

import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * 生产者 ----用户产生消息
 */
@Component
public class ProducerMsg {
    @Value("${apache.rocketmq.producer.producerGroup}")
    private String producerGroup; //生产者

    @Value("${apache.rocketmq.namesrvAddr}")
    private String namesrvAddr;

    private DefaultMQProducer producer;//默认生产者
    //提供get方法，让外部调用
    public DefaultMQProducer getProducer() {
        return producer;
    }

    /**
     * @PostConstruct在servlet初始化时执行，只执行一次 作用：让当前方法在构造函数之上，在init方法执行之前
     */
    @PostConstruct
    public void defaultMQProducer() {
        //1：创建一个默认的生产者对象--作用用于生成消息
        producer = new DefaultMQProducer(producerGroup);
        //2:绑定生产者和nameserver，就是建立和broker程序的关系
        producer.setNamesrvAddr(namesrvAddr);
        //3:发送消息
        try {
            producer.start();
        } catch (MQClientException e) {
            e.printStackTrace();
        }
    }
}